using System;
using MicrosoftResearch.Infer;
using MicrosoftResearch.Infer.Distributions;
using MicrosoftResearch.Infer.Collections;
using MicrosoftResearch.Infer.Factors;

namespace MicrosoftResearch.Infer.Models.User
{
	/// <summary>
	/// Class for performing inference in model 'Model' using algorithm 'ExpectationPropagation'.
	/// </summary>
	/// <remarks>
	/// The easiest way to use this class is to wrap an instance in a CompiledAlgorithm object and use
	/// the methods on CompiledAlgorithm to set parameters and execute inference.
	/// 
	/// If you instead wish to use this class directly, you must perform the following steps:
	/// 1) Create an instance of the class
	/// 2) Set the value of any externally-set fields e.g. data, priors
	/// 3) Call the Reset() method
	/// 4) Call the Initialise() method once
	/// 5) Call the Update() method multiple times  - each call performs one iteration of inference
	/// 6) Use the XXXMarginal() methods to retrieve posterior marginals for different variables.
	/// 
	/// Generated by Infer.NET 2.3 beta 4 at 19:26 on 29 May 2010.
	/// </remarks>
	public class Model14_EP : IIterativeProcess
	{
		#region Fields
		// Messages from uses of 'vbool30'
		public Bernoulli[] vbool30_uses_B;
		// The constant 'vBernoulli38'
		public Bernoulli vBernoulli38;
		// Message from definition of 'vbool30'
		public Bernoulli vbool30_F;
		// Messages from uses of 'vbool22'
		public Bernoulli[] vbool22_uses_B;
		// The constant 'vBernoulli30'
		public Bernoulli vBernoulli30;
		// Message from definition of 'vbool22'
		public Bernoulli vbool22_F;
		// Messages from uses of 'vbool298'
		public Bernoulli[] vbool298_uses_B;
		// Message from definition of 'vbool298'
		public Bernoulli vbool298_F;
		// Messages from uses of 'vbool134'
		public Bernoulli[] vbool134_uses_B;
		// The constant 'vBernoulli142'
		public Bernoulli vBernoulli142;
		// Message from definition of 'vbool134'
		public Bernoulli vbool134_F;
		// Messages from uses of 'vbool362'
		public Bernoulli[] vbool362_uses_B;
		// Message from definition of 'vbool362'
		public Bernoulli vbool362_F;
		// Messages from uses of 'vbool118'
		public Bernoulli[] vbool118_uses_B;
		// The constant 'vBernoulli126'
		public Bernoulli vBernoulli126;
		// Message from definition of 'vbool118'
		public Bernoulli vbool118_F;
		// Messages from uses of 'vbool346'
		public Bernoulli[] vbool346_uses_B;
		// Message from definition of 'vbool346'
		public Bernoulli vbool346_F;
		// Messages from uses of 'vbool126'
		public Bernoulli[] vbool126_uses_B;
		// The constant 'vBernoulli134'
		public Bernoulli vBernoulli134;
		// Message from definition of 'vbool126'
		public Bernoulli vbool126_F;
		// Messages from uses of 'vbool354'
		public Bernoulli[] vbool354_uses_B;
		// Message from definition of 'vbool354'
		public Bernoulli vbool354_F;
		// Messages from uses of 'vbool95'
		public Bernoulli[] vbool95_uses_B;
		// The constant 'vBernoulli103'
		public Bernoulli vBernoulli103;
		// Message from definition of 'vbool95'
		public Bernoulli vbool95_F;
		// Messages from uses of 'vbool338'
		public Bernoulli[] vbool338_uses_B;
		// Message from definition of 'vbool338'
		public Bernoulli vbool338_F;
		// Messages from uses of 'vbool56'
		public Bernoulli[] vbool56_uses_B;
		// The constant 'vBernoulli64'
		public Bernoulli vBernoulli64;
		// Message from definition of 'vbool56'
		public Bernoulli vbool56_F;
		// Messages from uses of 'vbool322'
		public Bernoulli[] vbool322_uses_B;
		// Message from definition of 'vbool322'
		public Bernoulli vbool322_F;
		// Messages from uses of 'vbool173'
		public Bernoulli[] vbool173_uses_B;
		// The constant 'vBernoulli181'
		public Bernoulli vBernoulli181;
		// Message from definition of 'vbool173'
		public Bernoulli vbool173_F;
		// Messages from uses of 'vbool461'
		public Bernoulli[] vbool461_uses_B;
		// Message from definition of 'vbool461'
		public Bernoulli vbool461_F;
		// Messages from uses of 'vbool48'
		public Bernoulli[] vbool48_uses_B;
		// The constant 'vBernoulli56'
		public Bernoulli vBernoulli56;
		// Message from definition of 'vbool48'
		public Bernoulli vbool48_F;
		// Messages from uses of 'vbool306'
		public Bernoulli[] vbool306_uses_B;
		// Message from definition of 'vbool306'
		public Bernoulli vbool306_F;
		// Messages from uses of 'vbool74'
		public Bernoulli[] vbool74_uses_B;
		// The constant 'vBernoulli82'
		public Bernoulli vBernoulli82;
		// Message from definition of 'vbool74'
		public Bernoulli vbool74_F;
		// Messages from uses of 'vbool314'
		public Bernoulli[] vbool314_uses_B;
		// Message from definition of 'vbool314'
		public Bernoulli vbool314_F;
		// Messages from uses of 'vbool165'
		public Bernoulli[] vbool165_uses_B;
		// The constant 'vBernoulli173'
		public Bernoulli vBernoulli173;
		// Message from definition of 'vbool165'
		public Bernoulli vbool165_F;
		// Messages from uses of 'vbool435'
		public Bernoulli[] vbool435_uses_B;
		// Message from definition of 'vbool435'
		public Bernoulli vbool435_F;
		// Messages from uses of 'vbool4'
		public Bernoulli[] vbool4_uses_B;
		// The constant 'vBernoulli12'
		public Bernoulli vBernoulli12;
		// Message from definition of 'vbool4'
		public Bernoulli vbool4_F;
		// Messages from uses of 'vbool290'
		public Bernoulli[] vbool290_uses_B;
		// Message from definition of 'vbool290'
		public Bernoulli vbool290_F;
		// Messages from uses of 'vbool82'
		public Bernoulli[] vbool82_uses_B;
		// The constant 'vBernoulli90'
		public Bernoulli vBernoulli90;
		// Message from definition of 'vbool82'
		public Bernoulli vbool82_F;
		// Messages from uses of 'vbool330'
		public Bernoulli[] vbool330_uses_B;
		// Message from definition of 'vbool330'
		public Bernoulli vbool330_F;
		// Messages from uses of 'vbool147'
		public Bernoulli[] vbool147_uses_B;
		// The constant 'vBernoulli155'
		public Bernoulli vBernoulli155;
		// Message from definition of 'vbool147'
		public Bernoulli vbool147_F;
		// Messages from uses of 'vbool427'
		public Bernoulli[] vbool427_uses_B;
		// Message from definition of 'vbool427'
		public Bernoulli vbool427_F;
		// Messages from uses of 'vbool462'
		public Bernoulli[] vbool462_uses_B;
		// Message from definition of 'vbool462'
		public Bernoulli vbool462_F;
		// Message to definition of 'vbool298'
		public Bernoulli vbool298_B;
		// Messages to uses of 'vbool22'
		public Bernoulli[] vbool22_uses_F;
		// Messages to uses of 'vbool30'
		public Bernoulli[] vbool30_uses_F;
		// Message to definition of 'vbool362'
		public Bernoulli vbool362_B;
		// Messages to uses of 'vbool134'
		public Bernoulli[] vbool134_uses_F;
		// The constant 'vBernoulli5'
		public Bernoulli vBernoulli5;
		// Message to definition of 'vbool346'
		public Bernoulli vbool346_B;
		// Messages to uses of 'vbool118'
		public Bernoulli[] vbool118_uses_F;
		// Message to definition of 'vbool354'
		public Bernoulli vbool354_B;
		// Messages to uses of 'vbool126'
		public Bernoulli[] vbool126_uses_F;
		// Message to definition of 'vbool338'
		public Bernoulli vbool338_B;
		// Messages to uses of 'vbool95'
		public Bernoulli[] vbool95_uses_F;
		// Message to definition of 'vbool322'
		public Bernoulli vbool322_B;
		// Messages to uses of 'vbool56'
		public Bernoulli[] vbool56_uses_F;
		// Message to definition of 'vbool461'
		public Bernoulli vbool461_B;
		// Messages to uses of 'vbool173'
		public Bernoulli[] vbool173_uses_F;
		// Message to definition of 'vbool306'
		public Bernoulli vbool306_B;
		// Messages to uses of 'vbool48'
		public Bernoulli[] vbool48_uses_F;
		// Message to definition of 'vbool314'
		public Bernoulli vbool314_B;
		// Messages to uses of 'vbool74'
		public Bernoulli[] vbool74_uses_F;
		// Message to definition of 'vbool435'
		public Bernoulli vbool435_B;
		// Messages to uses of 'vbool165'
		public Bernoulli[] vbool165_uses_F;
		// The constant 'vBernoulli6'
		public Bernoulli vBernoulli6;
		// Message to definition of 'vbool290'
		public Bernoulli vbool290_B;
		// Messages to uses of 'vbool4'
		public Bernoulli[] vbool4_uses_F;
		// Message to definition of 'vbool330'
		public Bernoulli vbool330_B;
		// Messages to uses of 'vbool82'
		public Bernoulli[] vbool82_uses_F;
		// Message to definition of 'vbool427'
		public Bernoulli vbool427_B;
		// Messages to uses of 'vbool147'
		public Bernoulli[] vbool147_uses_F;
		// Message to definition of 'vbool462'
		public Bernoulli vbool462_B;
		// Message to marginal of 'vbool298'
		public Bernoulli vbool298_marginal_B;
		// Message to marginal of 'vbool362'
		public Bernoulli vbool362_marginal_B;
		// Message to marginal of 'vbool346'
		public Bernoulli vbool346_marginal_B;
		// Message to marginal of 'vbool354'
		public Bernoulli vbool354_marginal_B;
		// Message to marginal of 'vbool338'
		public Bernoulli vbool338_marginal_B;
		// Message to marginal of 'vbool322'
		public Bernoulli vbool322_marginal_B;
		// Message to marginal of 'vbool461'
		public Bernoulli vbool461_marginal_B;
		// Message to marginal of 'vbool306'
		public Bernoulli vbool306_marginal_B;
		// Message to marginal of 'vbool314'
		public Bernoulli vbool314_marginal_B;
		// Message to marginal of 'vbool435'
		public Bernoulli vbool435_marginal_B;
		// Message to marginal of 'vbool290'
		public Bernoulli vbool290_marginal_B;
		// Message to marginal of 'vbool330'
		public Bernoulli vbool330_marginal_B;
		// Message to marginal of 'vbool427'
		public Bernoulli vbool427_marginal_B;
		// Message to marginal of 'vbool462'
		public Bernoulli vbool462_marginal_B;
		// Message to marginal of 'vbool30'
		public Bernoulli vbool30_marginal_B;
		// Message to marginal of 'vbool22'
		public Bernoulli vbool22_marginal_B;
		// Message to marginal of 'vbool134'
		public Bernoulli vbool134_marginal_B;
		// Message to marginal of 'vbool118'
		public Bernoulli vbool118_marginal_B;
		// Message to marginal of 'vbool126'
		public Bernoulli vbool126_marginal_B;
		// Message to marginal of 'vbool95'
		public Bernoulli vbool95_marginal_B;
		// Message to marginal of 'vbool56'
		public Bernoulli vbool56_marginal_B;
		// Message to marginal of 'vbool173'
		public Bernoulli vbool173_marginal_B;
		// Message to marginal of 'vbool48'
		public Bernoulli vbool48_marginal_B;
		// Message to marginal of 'vbool74'
		public Bernoulli vbool74_marginal_B;
		// Message to marginal of 'vbool165'
		public Bernoulli vbool165_marginal_B;
		// Message to marginal of 'vbool4'
		public Bernoulli vbool4_marginal_B;
		// Message to marginal of 'vbool82'
		public Bernoulli vbool82_marginal_B;
		// Message to marginal of 'vbool147'
		public Bernoulli vbool147_marginal_B;
		#endregion

		#region Methods
		/// <summary>
		/// Configures constant values that will not change during the lifetime of the class.
		/// </summary>
		/// <remarks>
		/// This method should be called once only after the class is instantiated.  In future, it will likely become
		/// the class constructor.
		/// </remarks>
		public void Reset()
		{
			// Create array for 'vbool30_uses' backwards messages.
			this.vbool30_uses_B = new Bernoulli[1];
			this.vBernoulli38 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool30_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli38);
			}
			this.vbool30_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli38);
			// Message to 'vbool30' from Random factor
			this.vbool30_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli38);
			// Create array for 'vbool22_uses' backwards messages.
			this.vbool22_uses_B = new Bernoulli[2];
			this.vBernoulli30 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool22_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli30);
			}
			this.vbool22_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli30);
			// Message to 'vbool22' from Random factor
			this.vbool22_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli30);
			// Create array for 'vbool298_uses' backwards messages.
			this.vbool298_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool298_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool298_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool134_uses' backwards messages.
			this.vbool134_uses_B = new Bernoulli[3];
			this.vBernoulli142 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool134_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli142);
			}
			this.vbool134_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli142);
			// Message to 'vbool134' from Random factor
			this.vbool134_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli142);
			// Create array for 'vbool362_uses' backwards messages.
			this.vbool362_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool362_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool362_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool118_uses' backwards messages.
			this.vbool118_uses_B = new Bernoulli[2];
			this.vBernoulli126 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool118_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli126);
			}
			this.vbool118_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli126);
			// Message to 'vbool118' from Random factor
			this.vbool118_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli126);
			// Create array for 'vbool346_uses' backwards messages.
			this.vbool346_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool346_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool346_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool126_uses' backwards messages.
			this.vbool126_uses_B = new Bernoulli[2];
			this.vBernoulli134 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool126_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli134);
			}
			this.vbool126_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli134);
			// Message to 'vbool126' from Random factor
			this.vbool126_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli134);
			// Create array for 'vbool354_uses' backwards messages.
			this.vbool354_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool354_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool354_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool95_uses' backwards messages.
			this.vbool95_uses_B = new Bernoulli[2];
			this.vBernoulli103 = new Bernoulli(0.99);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool95_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli103);
			}
			this.vbool95_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli103);
			// Message to 'vbool95' from Random factor
			this.vbool95_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli103);
			// Create array for 'vbool338_uses' backwards messages.
			this.vbool338_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool338_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool338_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool56_uses' backwards messages.
			this.vbool56_uses_B = new Bernoulli[3];
			this.vBernoulli64 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool56_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli64);
			}
			this.vbool56_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli64);
			// Message to 'vbool56' from Random factor
			this.vbool56_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli64);
			// Create array for 'vbool322_uses' backwards messages.
			this.vbool322_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool322_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool322_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool173_uses' backwards messages.
			this.vbool173_uses_B = new Bernoulli[2];
			this.vBernoulli181 = new Bernoulli(0.99);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool173_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli181);
			}
			this.vbool173_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli181);
			// Message to 'vbool173' from Random factor
			this.vbool173_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli181);
			// Create array for 'vbool461_uses' backwards messages.
			this.vbool461_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool461_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool461_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool48_uses' backwards messages.
			this.vbool48_uses_B = new Bernoulli[2];
			this.vBernoulli56 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool48_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli56);
			}
			this.vbool48_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli56);
			// Message to 'vbool48' from Random factor
			this.vbool48_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli56);
			// Create array for 'vbool306_uses' backwards messages.
			this.vbool306_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool306_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool306_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool74_uses' backwards messages.
			this.vbool74_uses_B = new Bernoulli[2];
			this.vBernoulli82 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool74_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli82);
			}
			this.vbool74_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli82);
			// Message to 'vbool74' from Random factor
			this.vbool74_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli82);
			// Create array for 'vbool314_uses' backwards messages.
			this.vbool314_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool314_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool314_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool165_uses' backwards messages.
			this.vbool165_uses_B = new Bernoulli[2];
			this.vBernoulli173 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool165_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli173);
			}
			this.vbool165_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli173);
			// Message to 'vbool165' from Random factor
			this.vbool165_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli173);
			// Create array for 'vbool435_uses' backwards messages.
			this.vbool435_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool435_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool435_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool4_uses' backwards messages.
			this.vbool4_uses_B = new Bernoulli[1];
			this.vBernoulli12 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool4_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli12);
			}
			this.vbool4_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli12);
			// Message to 'vbool4' from Random factor
			this.vbool4_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli12);
			// Create array for 'vbool290_uses' backwards messages.
			this.vbool290_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool290_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool290_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool82_uses' backwards messages.
			this.vbool82_uses_B = new Bernoulli[2];
			this.vBernoulli90 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool82_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli90);
			}
			this.vbool82_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli90);
			// Message to 'vbool82' from Random factor
			this.vbool82_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli90);
			// Create array for 'vbool330_uses' backwards messages.
			this.vbool330_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool330_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool330_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool147_uses' backwards messages.
			this.vbool147_uses_B = new Bernoulli[2];
			this.vBernoulli155 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool147_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli155);
			}
			this.vbool147_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli155);
			// Message to 'vbool147' from Random factor
			this.vbool147_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli155);
			// Create array for 'vbool427_uses' backwards messages.
			this.vbool427_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool427_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool427_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool462_uses' backwards messages.
			this.vbool462_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool462_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool462_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool298_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool22_uses' forwards messages.
			this.vbool22_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool22_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli30);
			}
			// Create array for 'vbool30_uses' forwards messages.
			this.vbool30_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool30_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli38);
			}
			// Message to 'vbool30_uses' from UsesEqualDef factor
			this.vbool30_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool30_uses_B, this.vbool30_F, 0, this.vbool30_uses_F[0]);
			this.vbool362_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool134_uses' forwards messages.
			this.vbool134_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool134_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli142);
			}
			this.vBernoulli5 = new Bernoulli(0.9);
			// Message to 'vbool298_uses' from EqualRandom factor
			this.vbool298_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool362_uses' from EqualRandom factor
			this.vbool362_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool346_uses' from EqualRandom factor
			this.vbool346_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool354_uses' from EqualRandom factor
			this.vbool354_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool338_uses' from EqualRandom factor
			this.vbool338_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool322_uses' from EqualRandom factor
			this.vbool322_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool306_uses' from EqualRandom factor
			this.vbool306_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool314_uses' from EqualRandom factor
			this.vbool314_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool435_uses' from EqualRandom factor
			this.vbool435_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool290_uses' from EqualRandom factor
			this.vbool290_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool330_uses' from EqualRandom factor
			this.vbool330_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool427_uses' from EqualRandom factor
			this.vbool427_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool298' from ReplicateWithMarginal factor
			this.vbool298_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool298_uses_B, this.vbool298_B);
			// Message to 'vbool22_uses' from AreEqual factor
			this.vbool22_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool298_B, this.vbool30_uses_F[0]);
			// Message to 'vbool362' from ReplicateWithMarginal factor
			this.vbool362_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool362_uses_B, this.vbool362_B);
			// Message to 'vbool22_uses' from UsesEqualDef factor
			this.vbool22_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool22_uses_B, this.vbool22_F, 1, this.vbool22_uses_F[1]);
			// Message to 'vbool134_uses' from AreEqual factor
			this.vbool134_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool362_B, this.vbool22_uses_F[1]);
			this.vbool346_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool346' from ReplicateWithMarginal factor
			this.vbool346_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool346_uses_B, this.vbool346_B);
			// Create array for 'vbool118_uses' forwards messages.
			this.vbool118_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool118_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli126);
			}
			this.vbool354_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool354' from ReplicateWithMarginal factor
			this.vbool354_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool354_uses_B, this.vbool354_B);
			// Create array for 'vbool126_uses' forwards messages.
			this.vbool126_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool126_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli134);
			}
			this.vbool338_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool338' from ReplicateWithMarginal factor
			this.vbool338_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool338_uses_B, this.vbool338_B);
			// Create array for 'vbool95_uses' forwards messages.
			this.vbool95_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool95_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli103);
			}
			this.vbool322_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool322' from ReplicateWithMarginal factor
			this.vbool322_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool322_uses_B, this.vbool322_B);
			// Create array for 'vbool56_uses' forwards messages.
			this.vbool56_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool56_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli64);
			}
			this.vbool461_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool173_uses' forwards messages.
			this.vbool173_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool173_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli181);
			}
			this.vbool306_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool306' from ReplicateWithMarginal factor
			this.vbool306_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool306_uses_B, this.vbool306_B);
			// Create array for 'vbool48_uses' forwards messages.
			this.vbool48_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool48_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli56);
			}
			this.vbool314_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool314' from ReplicateWithMarginal factor
			this.vbool314_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool314_uses_B, this.vbool314_B);
			// Create array for 'vbool74_uses' forwards messages.
			this.vbool74_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool74_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli82);
			}
			this.vbool435_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool435' from ReplicateWithMarginal factor
			this.vbool435_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool435_uses_B, this.vbool435_B);
			// Create array for 'vbool165_uses' forwards messages.
			this.vbool165_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool165_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli173);
			}
			this.vBernoulli6 = new Bernoulli(0.9);
			// Message to 'vbool461_uses' from EqualRandom factor
			this.vbool461_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool462_uses' from EqualRandom factor
			this.vbool462_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool461' from ReplicateWithMarginal factor
			this.vbool461_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool461_uses_B, this.vbool461_B);
			this.vbool290_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool290' from ReplicateWithMarginal factor
			this.vbool290_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool290_uses_B, this.vbool290_B);
			// Create array for 'vbool4_uses' forwards messages.
			this.vbool4_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool4_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli12);
			}
			// Message to 'vbool4_uses' from UsesEqualDef factor
			this.vbool4_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool4_uses_B, this.vbool4_F, 0, this.vbool4_uses_F[0]);
			// Message to 'vbool48_uses' from AreEqual factor
			this.vbool48_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool290_B, this.vbool4_uses_F[0]);
			// Message to 'vbool48_uses' from UsesEqualDef factor
			this.vbool48_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool48_uses_B, this.vbool48_F, 0, this.vbool48_uses_F[0]);
			// Message to 'vbool56_uses' from AreEqual factor
			this.vbool56_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool306_B, this.vbool48_uses_F[0]);
			this.vbool330_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool330' from ReplicateWithMarginal factor
			this.vbool330_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool330_uses_B, this.vbool330_B);
			// Create array for 'vbool82_uses' forwards messages.
			this.vbool82_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool82_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli90);
			}
			this.vbool427_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool427' from ReplicateWithMarginal factor
			this.vbool427_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool427_uses_B, this.vbool427_B);
			// Create array for 'vbool147_uses' forwards messages.
			this.vbool147_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool147_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli155);
			}
			this.vbool462_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool462' from ReplicateWithMarginal factor
			this.vbool462_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool462_uses_B, this.vbool462_B);
		}

		/// <summary>
		/// Creates message arrays and initialises their values ready for inference to be performed.
		/// </summary>
		/// <remarks>
		/// This method should be called once each time inference is performed. Since the initialisation
		/// procedure normally dependson external values such as priors and array sizes, all external
		/// values must be set before calling this method.
		/// 
		/// As well as initialising message arrays, this method also performs any message passing that
		/// the scheduler determines need only be carried out once.
		/// </remarks>
		public void Initialise()
		{
			this.vbool298_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool362_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool346_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool354_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool338_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool322_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool461_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool306_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool314_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool435_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool290_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool330_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool427_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool462_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool30_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli38);
			this.vbool22_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli30);
			this.vbool134_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli142);
			this.vbool118_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli126);
			this.vbool126_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli134);
			this.vbool95_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli103);
			this.vbool56_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli64);
			this.vbool173_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli181);
			this.vbool48_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli56);
			this.vbool74_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli82);
			this.vbool165_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli173);
			this.vbool4_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli12);
			this.vbool82_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli90);
			this.vbool147_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli155);
		}

		/// <summary>
		/// Performs one iteration of inference.
		/// </summary>
		/// <remarks>
		/// This method should be called multiple times, after calling Initialise(), in order to perform
		/// multiple iterations of message passing.  You can call methods to retrieve posterior marginals
		/// at any time - the returned marginal will be the estimated marginal given the current state of
		/// the message passing algorithm.  This can be useful for monitoring convergence of the algorithm.
		/// 
		/// Where the scheduler has determined inference can be performed without iteration, this method
		/// does nothing.
		/// </remarks>
		public void Update()
		{
			// Message to 'vbool134_uses' from UsesEqualDef factor
			this.vbool134_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool134_uses_B, this.vbool134_F, 1, this.vbool134_uses_F[1]);
			// Message to 'vbool118_uses' from AreEqual factor
			this.vbool118_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool346_B, this.vbool134_uses_F[1]);
			// Message to 'vbool118_uses' from UsesEqualDef factor
			this.vbool118_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool118_uses_B, this.vbool118_F, 1, this.vbool118_uses_F[1]);
			// Message to 'vbool95_uses' from AreEqual factor
			this.vbool95_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool338_B, this.vbool118_uses_F[1]);
			// Message to 'vbool95_uses' from UsesEqualDef factor
			this.vbool95_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool95_uses_B, this.vbool95_F, 1, this.vbool95_uses_F[1]);
			// Message to 'vbool173_uses' from AreEqual factor
			this.vbool173_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool461_B, this.vbool95_uses_F[1]);
			// Message to 'vbool173_uses' from UsesEqualDef factor
			this.vbool173_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool173_uses_B, this.vbool173_F, 1, this.vbool173_uses_F[1]);
			// Message to 'vbool165_uses' from AreEqual factor
			this.vbool165_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool435_B, this.vbool173_uses_F[1]);
			// Message to 'vbool165_uses' from UsesEqualDef factor
			this.vbool165_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool165_uses_B, this.vbool165_F, 1, this.vbool165_uses_F[1]);
			// Message to 'vbool147_uses' from AreEqual factor
			this.vbool147_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool427_B, this.vbool165_uses_F[1]);
			// Message to 'vbool147_uses' from UsesEqualDef factor
			this.vbool147_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool147_uses_B, this.vbool147_F, 1, this.vbool147_uses_F[1]);
			// Message to 'vbool82_uses' from AreEqual factor
			this.vbool82_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool462_B, this.vbool147_uses_F[1]);
			// Message to 'vbool82_uses' from UsesEqualDef factor
			this.vbool82_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool82_uses_B, this.vbool82_F, 0, this.vbool82_uses_F[0]);
			// Message to 'vbool74_uses' from AreEqual factor
			this.vbool74_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool330_B, this.vbool82_uses_F[0]);
			// Message to 'vbool74_uses' from UsesEqualDef factor
			this.vbool74_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool74_uses_B, this.vbool74_F, 0, this.vbool74_uses_F[0]);
			// Message to 'vbool56_uses' from AreEqual factor
			this.vbool56_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool314_B, this.vbool74_uses_F[0]);
			// Message to 'vbool56_uses' from UsesEqualDef factor
			this.vbool56_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool56_uses_B, this.vbool56_F, 0, this.vbool56_uses_F[0]);
			// Message to 'vbool126_uses' from AreEqual factor
			this.vbool126_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool322_B, this.vbool56_uses_F[0]);
			// Message to 'vbool126_uses' from UsesEqualDef factor
			this.vbool126_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool126_uses_B, this.vbool126_F, 0, this.vbool126_uses_F[0]);
			// Message to 'vbool134_uses' from AreEqual factor
			this.vbool134_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool354_B, this.vbool126_uses_F[0]);
			// Message to 'vbool134_uses' from UsesEqualDef factor
			this.vbool134_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool134_uses_B, this.vbool134_F, 0, this.vbool134_uses_F[0]);
			// Message to 'vbool22_uses' from AreEqual factor
			this.vbool22_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool362_B, this.vbool134_uses_F[0]);
			// Message to 'vbool22_marginal' from UsesEqualDef factor
			this.vbool22_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool22_uses_B, this.vbool22_F, this.vbool22_marginal_B);
			// Message to 'vbool362' from AreEqual factor
			this.vbool362_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool134_uses_F[0], this.vbool22_uses_F[1]);
			// Message to 'vbool362_marginal' from ReplicateWithMarginal factor
			this.vbool362_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool362_uses_B, this.vbool362_F, this.vbool362_marginal_B);
			// Message to 'vbool22_uses' from UsesEqualDef factor
			this.vbool22_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool22_uses_B, this.vbool22_F, 0, this.vbool22_uses_F[0]);
			// Message to 'vbool30_uses' from AreEqual factor
			this.vbool30_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool298_B, this.vbool22_uses_F[0]);
			// Message to 'vbool30_marginal' from UsesEqualDef factor
			this.vbool30_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool30_uses_B, this.vbool30_F, this.vbool30_marginal_B);
			// Message to 'vbool298' from AreEqual factor
			this.vbool298_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool30_uses_F[0], this.vbool22_uses_F[0]);
			// Message to 'vbool298_marginal' from ReplicateWithMarginal factor
			this.vbool298_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool298_uses_B, this.vbool298_F, this.vbool298_marginal_B);
			// Message to 'vbool134_uses' from UsesEqualDef factor
			this.vbool134_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool134_uses_B, this.vbool134_F, 2, this.vbool134_uses_F[2]);
			// Message to 'vbool126_uses' from AreEqual factor
			this.vbool126_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool354_B, this.vbool134_uses_F[2]);
			// Message to 'vbool126_marginal' from UsesEqualDef factor
			this.vbool126_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool126_uses_B, this.vbool126_F, this.vbool126_marginal_B);
			// Message to 'vbool354' from AreEqual factor
			this.vbool354_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool134_uses_F[2], this.vbool126_uses_F[0]);
			// Message to 'vbool354_marginal' from ReplicateWithMarginal factor
			this.vbool354_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool354_uses_B, this.vbool354_F, this.vbool354_marginal_B);
			// Message to 'vbool126_uses' from UsesEqualDef factor
			this.vbool126_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool126_uses_B, this.vbool126_F, 1, this.vbool126_uses_F[1]);
			// Message to 'vbool56_uses' from AreEqual factor
			this.vbool56_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool322_B, this.vbool126_uses_F[1]);
			// Message to 'vbool56_marginal' from UsesEqualDef factor
			this.vbool56_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool56_uses_B, this.vbool56_F, this.vbool56_marginal_B);
			// Message to 'vbool322' from AreEqual factor
			this.vbool322_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool56_uses_F[0], this.vbool126_uses_F[1]);
			// Message to 'vbool322_marginal' from ReplicateWithMarginal factor
			this.vbool322_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool322_uses_B, this.vbool322_F, this.vbool322_marginal_B);
			// Message to 'vbool56_uses' from UsesEqualDef factor
			this.vbool56_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool56_uses_B, this.vbool56_F, 1, this.vbool56_uses_F[1]);
			// Message to 'vbool48_uses' from AreEqual factor
			this.vbool48_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool306_B, this.vbool56_uses_F[1]);
			// Message to 'vbool48_marginal' from UsesEqualDef factor
			this.vbool48_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool48_uses_B, this.vbool48_F, this.vbool48_marginal_B);
			// Message to 'vbool306' from AreEqual factor
			this.vbool306_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool56_uses_F[1], this.vbool48_uses_F[0]);
			// Message to 'vbool306_marginal' from ReplicateWithMarginal factor
			this.vbool306_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool306_uses_B, this.vbool306_F, this.vbool306_marginal_B);
			// Message to 'vbool56_uses' from UsesEqualDef factor
			this.vbool56_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool56_uses_B, this.vbool56_F, 2, this.vbool56_uses_F[2]);
			// Message to 'vbool74_uses' from AreEqual factor
			this.vbool74_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool314_B, this.vbool56_uses_F[2]);
			// Message to 'vbool74_marginal' from UsesEqualDef factor
			this.vbool74_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool74_uses_B, this.vbool74_F, this.vbool74_marginal_B);
			// Message to 'vbool314' from AreEqual factor
			this.vbool314_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool56_uses_F[2], this.vbool74_uses_F[0]);
			// Message to 'vbool314_marginal' from ReplicateWithMarginal factor
			this.vbool314_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool314_uses_B, this.vbool314_F, this.vbool314_marginal_B);
			// Message to 'vbool48_uses' from UsesEqualDef factor
			this.vbool48_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool48_uses_B, this.vbool48_F, 1, this.vbool48_uses_F[1]);
			// Message to 'vbool4_uses' from AreEqual factor
			this.vbool4_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool290_B, this.vbool48_uses_F[1]);
			// Message to 'vbool4_marginal' from UsesEqualDef factor
			this.vbool4_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool4_uses_B, this.vbool4_F, this.vbool4_marginal_B);
			// Message to 'vbool290' from AreEqual factor
			this.vbool290_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool4_uses_F[0], this.vbool48_uses_F[1]);
			// Message to 'vbool290_marginal' from ReplicateWithMarginal factor
			this.vbool290_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool290_uses_B, this.vbool290_F, this.vbool290_marginal_B);
			// Message to 'vbool74_uses' from UsesEqualDef factor
			this.vbool74_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool74_uses_B, this.vbool74_F, 1, this.vbool74_uses_F[1]);
			// Message to 'vbool82_uses' from AreEqual factor
			this.vbool82_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool330_B, this.vbool74_uses_F[1]);
			// Message to 'vbool82_marginal' from UsesEqualDef factor
			this.vbool82_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool82_uses_B, this.vbool82_F, this.vbool82_marginal_B);
			// Message to 'vbool330' from AreEqual factor
			this.vbool330_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool82_uses_F[0], this.vbool74_uses_F[1]);
			// Message to 'vbool330_marginal' from ReplicateWithMarginal factor
			this.vbool330_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool330_uses_B, this.vbool330_F, this.vbool330_marginal_B);
			// Message to 'vbool82_uses' from UsesEqualDef factor
			this.vbool82_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool82_uses_B, this.vbool82_F, 1, this.vbool82_uses_F[1]);
			// Message to 'vbool147_uses' from AreEqual factor
			this.vbool147_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool462_B, this.vbool82_uses_F[1]);
			// Message to 'vbool147_marginal' from UsesEqualDef factor
			this.vbool147_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool147_uses_B, this.vbool147_F, this.vbool147_marginal_B);
			// Message to 'vbool462' from AreEqual factor
			this.vbool462_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool82_uses_F[1], this.vbool147_uses_F[1]);
			// Message to 'vbool462_marginal' from ReplicateWithMarginal factor
			this.vbool462_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool462_uses_B, this.vbool462_F, this.vbool462_marginal_B);
			// Message to 'vbool147_uses' from UsesEqualDef factor
			this.vbool147_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool147_uses_B, this.vbool147_F, 0, this.vbool147_uses_F[0]);
			// Message to 'vbool165_uses' from AreEqual factor
			this.vbool165_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool427_B, this.vbool147_uses_F[0]);
			// Message to 'vbool165_marginal' from UsesEqualDef factor
			this.vbool165_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool165_uses_B, this.vbool165_F, this.vbool165_marginal_B);
			// Message to 'vbool427' from AreEqual factor
			this.vbool427_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool147_uses_F[0], this.vbool165_uses_F[1]);
			// Message to 'vbool427_marginal' from ReplicateWithMarginal factor
			this.vbool427_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool427_uses_B, this.vbool427_F, this.vbool427_marginal_B);
			// Message to 'vbool165_uses' from UsesEqualDef factor
			this.vbool165_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool165_uses_B, this.vbool165_F, 0, this.vbool165_uses_F[0]);
			// Message to 'vbool173_uses' from AreEqual factor
			this.vbool173_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool435_B, this.vbool165_uses_F[0]);
			// Message to 'vbool173_marginal' from UsesEqualDef factor
			this.vbool173_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool173_uses_B, this.vbool173_F, this.vbool173_marginal_B);
			// Message to 'vbool435' from AreEqual factor
			this.vbool435_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool173_uses_F[1], this.vbool165_uses_F[0]);
			// Message to 'vbool435_marginal' from ReplicateWithMarginal factor
			this.vbool435_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool435_uses_B, this.vbool435_F, this.vbool435_marginal_B);
			// Message to 'vbool173_uses' from UsesEqualDef factor
			this.vbool173_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool173_uses_B, this.vbool173_F, 0, this.vbool173_uses_F[0]);
			// Message to 'vbool95_uses' from AreEqual factor
			this.vbool95_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool461_B, this.vbool173_uses_F[0]);
			// Message to 'vbool95_marginal' from UsesEqualDef factor
			this.vbool95_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool95_uses_B, this.vbool95_F, this.vbool95_marginal_B);
			// Message to 'vbool461' from AreEqual factor
			this.vbool461_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool95_uses_F[1], this.vbool173_uses_F[0]);
			// Message to 'vbool461_marginal' from ReplicateWithMarginal factor
			this.vbool461_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool461_uses_B, this.vbool461_F, this.vbool461_marginal_B);
			// Message to 'vbool95_uses' from UsesEqualDef factor
			this.vbool95_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool95_uses_B, this.vbool95_F, 0, this.vbool95_uses_F[0]);
			// Message to 'vbool118_uses' from AreEqual factor
			this.vbool118_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool338_B, this.vbool95_uses_F[0]);
			// Message to 'vbool118_marginal' from UsesEqualDef factor
			this.vbool118_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool118_uses_B, this.vbool118_F, this.vbool118_marginal_B);
			// Message to 'vbool338' from AreEqual factor
			this.vbool338_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool95_uses_F[0], this.vbool118_uses_F[1]);
			// Message to 'vbool338_marginal' from ReplicateWithMarginal factor
			this.vbool338_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool338_uses_B, this.vbool338_F, this.vbool338_marginal_B);
			// Message to 'vbool118_uses' from UsesEqualDef factor
			this.vbool118_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool118_uses_B, this.vbool118_F, 0, this.vbool118_uses_F[0]);
			// Message to 'vbool134_uses' from AreEqual factor
			this.vbool134_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool346_B, this.vbool118_uses_F[0]);
			// Message to 'vbool134_marginal' from UsesEqualDef factor
			this.vbool134_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool134_uses_B, this.vbool134_F, this.vbool134_marginal_B);
			// Message to 'vbool346' from AreEqual factor
			this.vbool346_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool134_uses_F[1], this.vbool118_uses_F[0]);
			// Message to 'vbool346_marginal' from ReplicateWithMarginal factor
			this.vbool346_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool346_uses_B, this.vbool346_F, this.vbool346_marginal_B);
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool22' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool22Marginal()
		{
			return this.vbool22_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool362' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool362Marginal()
		{
			return this.vbool362_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool30' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool30Marginal()
		{
			return this.vbool30_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool298' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool298Marginal()
		{
			return this.vbool298_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool126' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool126Marginal()
		{
			return this.vbool126_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool354' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool354Marginal()
		{
			return this.vbool354_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool56' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool56Marginal()
		{
			return this.vbool56_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool322' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool322Marginal()
		{
			return this.vbool322_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool48' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool48Marginal()
		{
			return this.vbool48_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool306' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool306Marginal()
		{
			return this.vbool306_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool74' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool74Marginal()
		{
			return this.vbool74_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool314' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool314Marginal()
		{
			return this.vbool314_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool4' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool4Marginal()
		{
			return this.vbool4_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool290' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool290Marginal()
		{
			return this.vbool290_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool82' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool82Marginal()
		{
			return this.vbool82_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool330' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool330Marginal()
		{
			return this.vbool330_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool147' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool147Marginal()
		{
			return this.vbool147_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool462' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool462Marginal()
		{
			return this.vbool462_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool165' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool165Marginal()
		{
			return this.vbool165_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool427' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool427Marginal()
		{
			return this.vbool427_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool173' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool173Marginal()
		{
			return this.vbool173_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool435' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool435Marginal()
		{
			return this.vbool435_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool95' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool95Marginal()
		{
			return this.vbool95_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool461' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool461Marginal()
		{
			return this.vbool461_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool118' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool118Marginal()
		{
			return this.vbool118_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool338' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool338Marginal()
		{
			return this.vbool338_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool134' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool134Marginal()
		{
			return this.vbool134_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool346' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool346Marginal()
		{
			return this.vbool346_marginal_B;
		}

		#endregion

	}

}
